Computer network industry analysts and experts agree that data traffic over large networks and, in particular, the Internet, is presently so heavy that the very nature in the way in which it is possible to use such networks may require fundamental changes. These difficulties are no doubt the result of continued exponential increases in the number of users, as well as in the number of large document files that these users expect to transfer. As a result of this unprecedented demand in the need for network bandwidth, Internet Service Providers (ISPs), backbone providers, and other carriers that provide the physical connections which implement the Internet face correspondingly unprecedented difficulty. This difficulty exists at all levels of network hierarchy, including the points of presence (POPs), central access nodes, network access points, and exchange points, such as metropolitan area exchanges.
To understand what has led to this situation, consider how the Internet is typically used. The most popular user environment, the World Wide Web, provides access to content on an equal basis through the use of the client and server communication model. In this structure, certain computers known as xe2x80x9cserversxe2x80x9d are used to store and provide information. Other computers in the network known as xe2x80x9cclientsxe2x80x9d allow the users to view documents through the use of a computer program known as a browser that requests a copy of the document be sent from host servers down to the client. Documents are typically requested by the client browser program specifying an address which identifies the host server which stores the document. After the browser specifies a document such as by its so-called Internet Protocol (IP) address, the request is sent to a naming service in order to obtain instructions for how to establish a connection with the host server associated with the IP address. Once this connection is established, the server retrieves the document from its local disk and transmits the document over network to the client. The connection between the client and host server is then terminated.
A common solution for the present bottlenecks within the Internet is to deploy higher speed hardware. Such solutions include the deployment of digital subscriber line (xDSL) cable modem technology to speed up the physical layer communication paths between the end users and points of presence. Gigabit speed routers and optical fiber backbones are also being proposed to alleviate congestion within the network itself. At the server site, server clusters and load balancers are being deployed to assist with the dispatching of Web pages more efficiently.
While all of these solutions provide some expediency, each addresses only part of the problem and none provides an ultimate solution to the problem; the path between the client and server is only as fast or as slow as the slowest physical link.
As it turns out, much of the traffic on the Internet is redundant in the sense that different users request the same documents from the same servers over and over again. Therefore, it is becoming increasingly apparent that certain techniques, such as distributed document caching, may be deployed to reduce the demand for access to both the servers and to the network routing infrastructure. Document caching provides a way to intercept client requests for the same document with the cache serving copies of the original document to multiple client locations.
With a cache, the process for providing document files to the client computers changes from the normal process. In particular, when the client requests the connection, say to a given server, the intermediate cache server may instead be requested to obtain the document. While the document is being transmitted down to the client computer, a copy is stored at the intermediate cache server. Therefore, when another client computer connected to the same network path requests the same content as the first user, rather than requiring the request to travel all the way back to the host server, the request may be served from the local cache server.
However, cache techniques are typically sub-optimal in one way or another. For example, most Web browser programs have a built-in cache that keeps copies of recently viewed content within the client computer itself. If the same content is requested again, the browser simply retrieves it from local storage instead of going out to the network. However, when a browser cache services only one end user, content often expires before it can be reused.
A browser-redirected cache server may also be deployed to service multiple end users. Such a cache server is a separate computer that sits inside a gateway or other point of presence. End users configure their Web browsers to redirect all HTTP traffic to the cache server instead of the locations implied by the Uniform Resource Locators (URLs). The cache server then returns the requested Web page if it has a copy. Otherwise, it forwards the request to the originally specified server and saves a copy as the response flows back. Such a cache server therefore acts as a proxy, receiving all requests and examining them to determine if it can fulfill them locally.
However, even when using proxy servers, it is typically necessary to configure the client browser, proxy server, routers, or other network infrastructure equipment in order to cause the request messages to be redirected to the proxy server. This provides some configuration management difficulties in that reconfiguration of browsers typically requires administrative overhead on the part of the humans who manage the networks.
To improve the odds of locating desired content without having to traverse the entire Internet, local points of presence can be supported by additional caches placed deeper into the network, such as at peering centers. If a primary cache cannot satisfy a request, it queries a secondary cache which in turn may query a tierciery cache, and so forth. If none of the caches in the hierarchy has the desired content, the primary cache ultimately ends up forwarding the document request to the originally requested host.
These caching schemes also fall short in some way. Forced redirection of HTTP traffic turns such cache servers into single points of failure. If a cache server overloads or malfunctions, access to the network is blocked. Recovery is especially awkward with browser redirected caching since every end user""s Web browser then has an explicit point to the broken server.
Forced redirection can also have a negative effect on network performance. Even if a browser is topologically closer to the real content server than to a cache server, all HTTP requests detour through the cache and any Web object not in the cache passes through the nearby router or switched twicexe2x80x94one when it travels from the originating server to the cache, and again as the cache forwards it back to the browser and furthermore passing messages from primary to secondary caches and back again at its noticeable latency and ultimately limits the scope of caching in larger networks.
Therefore, there is presently much controversy over the deployment of network caches for several reasons. Cache servers are, in particular, notoriously difficult to optimize. In certain configurations, they will quickly become overloaded in that the number of connections that they are expected to maintain with the user locations is more than the processing power can handle. Time spent determining whether to accept connections, cache documents, and/or refuse connections therefore overloads the cache server, which in turn reduces its performance on an exponential basis. In other situations, the cache servers are underloaded and not enough traffic is routed to them. They therefore represent a large investment of resources not providing optimum utilization and which are in effect underloaded.
The present invention involves tagging messages received at a network traffic interceptor to reduce redundant processing of messages. Received messages are analyzed and appropriately tagged at a message interceptor, where they are subsequently passed to a second processing unit for further processing. The tag appended or incorporated within a message provides a shorthand way of identifying messages associated with a particular connection.
In simple terms, a first message processing unit called a message redirector or message interceptor assigns a tag to a message based upon its content. The tag indicates how the message should be handled, such as identifying a TCP connection to which the message should be directed. After a message received at the redirector is tagged, the tagged message is subsequently passed along for further processing at a second message processing unit such as a cache server.
Accordingly, the second message processing unit need not decode the entire contents of the message to identify the connection associated with a particular message. Rather, the second message processing unit reads a tag associated with the message to determine a connection to which the message is directed. In this way, a stream of related messages are identified by a tag, simplifying the process of directing the messages to the appropriate state machine in the second processing unit such as a TCP state machine in a network traffic server.
In one embodiment, the techniques of the present invention are employed in distributed network systems. For example, a message redirector and cache server are combined for processing Web document request messages. A message redirector intercepts message flows intended for Web servers and passes the associated messages to the cache server, which then determines whether the requested information is stored in the cache server.
Preferably, information requests from client nodes on a network are originally intended for server nodes on a network, where an interceptor or redirector redirects the message to a data base manager maintaining duplicate copies of selected information available at server nodes on a network. If it is determined that the requested information, i.e., a web page, is located in the data base, the corresponding information in the data base is transmitted to the requesting party. Instead of receiving the information from the node on the network, the cache server provides the client node with information maintained in the cache server.
The cache server or data base manager, at any given time, processes many information requests so it is possible that the cache server is too busy to retrieve and transmit the requested information to a requesting client. If the cache server is too busy or the requested information is not stored in the cache server, the message flow is routed to the intended server on the network. In this case, the message redirector merely acts as a bridge so that the requesting node is supplied the requested information via communication between the requesting node and server on the network.
When a new connection is to be established for communication between the cache server and requesting node, a tag corresponding to the connection is assigned to the related stream of messages. The first and subsequent messages, i.e., a message flow, associated with a given connection are marked with the same tag to indicate that the series of messages is related to a particular connection such as a TCP connection between the cache server and requesting node.
Tagging or marking a particular message is done in a number of ways. In the preferred embodiment, the tag is overwritten in the Ethernet field or link layer of a message. Alternatively, the tag is appended to the message by the message redirector before it is directed to the cache server for further processing.
The message redirector and cache server, as mentioned, typically service many requests for information simultaneously. Therefore, an array of connection tracking objects are used to track active connections between the cache server and the many requesting nodes. A connection refers to a communication session between a client on the network and a corresponding TCP state machine running in the cache server and is a TCP connection. Multiple connections are simultaneously maintained by one processor for efficient use of hardware resources.
In one embodiment, multiple cache servers in communication with the redirector are deployed to support information requests. Hence, a connection tag further corresponds not only with the TCP state machine associated with a particular message, but also the cache server to which the message is directed. This is optionally achieved by storing the appropriate target cache server information, i.e., cache server servicing the request, in the corresponding connection tracking object so that a message can be properly forwarded by the redirector to the appropriate cache server.
To keep track of each connection, the message redirector and cache server both create a table of information for each active connection. For example, when it is determined that a request message will be serviced by the cache server, the message redirector allocates a connection tracking object corresponding to the connection. First, a connection tracking object is allocated and a corresponding tag is assigned to the given transaction. Second, the characteristics defining the transaction are stored in the object. Specifically, the TCP source and destination address and the IP source and destination address are stored in the object. Third, the type of protocol used to transfer information for a particular connection is stored in the object, i.e. TCP, UDP, etc.
Based on the information stored in the array of connection tracking objects, the message redirector checks newly received messages to determine whether a given message is associated with an active connection. In other words, the message redirector decodes the TCP and IP source and destination address of received messages to determine whether they pertain to an already active connection. This is done by comparing address information in the received message with information stored in the connection tracking objects. If there is a match, the message corresponds with a particular connection and the message is marked with the corresponding tag and forwarded with the tag to the cache server.
Because the cache server is capable of decoding each connection tag, further message processing is not required at the cache server in order to direct the message to the appropriate connection. In short, the tag allows the cache server to take a shortcut, directing the data in the message directly to the TCP state machine which is servicing the connection. Redundant processing of certain aspects of the message are, therefore, unnecessary.
New connection tracking objects are created based upon the content of a message. For example, the message redirector identifies new requests for Web pages based upon the type of message, such as a SYN message indicating that a node on the network is attempting to establish a new connection. For instance, the detection of a SYN message at the redirector indicates a new request for information stored in the cache server. This causes both the redirector and, upon receipt, the cache server to create a new connection tracking object in their respective connection arrays.
A FIN in a message indicates completion of an information transfer. Receipt of a FIN, therefore, causes a connection tracking object to be deleted after the appropriate time_wait period has expired, freeing resources for new connections.
Alternatively, the message redirector and cache server relay configuration messages for opening and closing connection tracking objects.
It should be noted that messages sent by the cache server to the redirector optionally include tags corresponding with a particular connection. A related stream of messages for servicing the information request are sent through the redirector to the requesting node on the network. Upon receipt, the redirector subsequently formats the message for transmission of the message to the requesting node on the network. For instance, if a tag is appended to the outbound message received at the redirector, the tag is deleted prior to transmission. Further, any IP and TCP source and destination information is incorporated in the message for appropriate routing.